package com.yuyue.springFramework.note04.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 无参注解
 * 注解使用 @interface 定义
 * 使用 @Target 定义注解的使用范围，不定义则代表可以用在任何地方
 * 使用 @Retention 定义注解的保留策略
 */
@Target(value = ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}

//package java.lang.annotation;
///*注解的使用范围*/
//public enum ElementType {
//    /*类、接口、枚举、注解上面*/
//    TYPE,
//    /*字段上*/
//    FIELD,
//    /*方法上*/
//    METHOD,
//    /*方法的参数上*/
//    PARAMETER,
//    /*构造函数上*/
//    CONSTRUCTOR,
//    /*本地变量上*/
//    LOCAL_VARIABLE,
//    /*注解上*/
//    ANNOTATION_TYPE,
//    /*包上*/
//    PACKAGE,
//    /*类型参数上*/
//    TYPE_PARAMETER,
//    /*类型名称上*/
//    TYPE_USE
//}

//public enum RetentionPolicy {
//    /*注解只保留在源码中，编译为字节码之后就丢失了，也就是class文件中就不存在了*/
//    SOURCE,
//    /*注解只保留在源码和字节码中，运行阶段会丢失*/
//    CLASS,
//    /*源码、字节码、运行期间都存在*/
//    RUNTIME
//}